home *** CD-ROM | disk | FTP | other *** search
/ Visual Basic Source Code / Visual Basic Source Code.iso / vbsource / optivc32 / vusstd.h < prev    next >
C/C++ Source or Header  |  1999-03-06  |  7KB  |  183 lines

  1. /*  VUSstd.h
  2.  
  3.   vector management functions for data type "unsigned short".
  4.  
  5.   Copyright (c) 1996-1999 by Martin Sander
  6.   All Rights Reserved.
  7. */
  8.  
  9. #ifndef __VUSSTD_H
  10. #define __VUSSTD_H
  11.  
  12. #if !defined( __VECLIB_H )
  13.    #include <VecLib.h>
  14. #endif
  15.  
  16. #ifdef __cplusplus
  17.    extern "C" {
  18. #endif
  19.  
  20. /**********************  Generation *************************************/
  21.  
  22. usVector  __vf  VUS_vector( ui size );
  23. usVector  __vf  VUS_vector0( ui size );
  24.  
  25. /***************  Addressing single vector elements ******************/
  26.  
  27. unsigned short _VFAR * VUS_Pelement( usVector X, ui n );
  28.       /* returns a pointer to the n'th element of X. For the memory model
  29.          HUGE, the pointer is normalized. */
  30. #define VUS_element( X, n )  (*VUS_Pelement( X, n ))
  31.  
  32. /****************** Initialization  ******************************/
  33.  
  34. void  __vf  VUS_equ0( usVector X, ui size );
  35. void  __vf  VUS_equC( usVector X, ui size, unsigned short C );
  36. void  __vf  VUS_equV( usVector Y, usVector X, ui size );
  37. void  __vf  VUSo_ramp( usVector X, ui size, unsigned short Start, short Rise );
  38. #ifdef V_trapIntError
  39.     #define VUS_ramp    VUSo_ramp
  40. #else
  41.     void  __vf  VUS_ramp( usVector X, ui size, unsigned short Start,
  42.                           short Rise );
  43. #endif
  44. long  __vf  VUS_random( usVector X, ui size, long seed,
  45.                         unsigned short MinVal, unsigned short MaxVal );
  46.                               /*  returns new seed */
  47.  
  48.  
  49. /**************  Data-type interconversions  **************************/
  50.  
  51. void __vf  Vo_SItoUS( usVector Y, siVector X, ui size );  /* signed-unsigned */
  52. void __vf  Vo_UStoSI( siVector Y, usVector X, ui size );
  53.  
  54. void __vf  V_UBtoUS( usVector Y, ubVector X, ui size );  /* up-conversion */
  55. void __vf  V_UStoU(  uVector  Y, usVector  X, ui size );
  56. void __vf  V_UStoUL( ulVector Y, usVector  X, ui size );
  57.  
  58. void __vf  V_UStoUB(  ubVector Y, usVector X, ui size ); /* down-conversion */
  59. void __vf  Vo_UtoUS(  usVector Y, uVector  X, ui size );
  60. void __vf  Vo_ULtoUS( usVector Y, ulVector X, ui size );
  61. #ifdef V_trapIntError
  62.     #define V_SItoUS  Vo_SItoUS
  63.     #define V_UStoSI  Vo_UStoSI
  64.     #define V_UtoUS   Vo_UtoUS
  65.     #define V_ULtoUS  Vo_ULtoUS
  66. #else
  67.     void  __vf   V_SItoUS( usVector Y, siVector X, ui size );
  68.     void  __vf   V_UStoSI( siVector Y, usVector X, ui size );
  69.     void  __vf   V_UtoUS(  usVector Y, uVector  X, ui size );
  70.     void  __vf   V_ULtoUS( usVector Y, ulVector X, ui size );
  71. #endif
  72.  
  73. void  __vf   V_UStoF(  fVector Y, usVector X, ui size );
  74. void  __vf   V_UStoD(  dVector Y, usVector X, ui size );
  75. #ifdef __BORLANDC__
  76.     void  __vf   V_UStoE(  eVector Y, usVector X, ui size );
  77. #else  /* no 80-bit IEEE reals with Visual C++ */
  78.     #define V_UStoE V_UStoD
  79. #endif
  80.  
  81.  
  82. /************** Index-oriented manipulations ***************************/
  83.  
  84. void  __vf  VUS_rev( usVector Y, usVector X, ui size );
  85. #ifdef V_HUGE
  86.     void  __vf  VUS_rotate( usVector Y, usVector X, ui size, long pos );
  87. #else
  88.     void  __vf  VUS_rotate( usVector Y, usVector X, ui size, int pos );
  89. #endif
  90.  
  91. void  __vf  VUS_delete( usVector X, ui size, ui pos );
  92. void  __vf  VUS_insert( usVector X, ui size, ui pos, unsigned short C );
  93.  
  94. void  __vf  VUS_sort( usVector Y, usVector X, ui size, int dir );
  95. void  __vf  VUS_sortind( uiVector Ind, usVector X, ui size, int dir );
  96.  
  97. void  __vf  VUS_subvector( usVector Y, ui sizey, usVector X, int samp );
  98. void  __vf  VUS_subvector_equC( usVector Y, ui subsz, unsigned samp,
  99.                                 unsigned short C );
  100. void  __vf  VUS_subvector_equV( usVector Y, ui subsz, unsigned samp,
  101.                                 usVector X );
  102.  
  103. void  __vf  VUS_indpick( usVector Y, uiVector Ind, ui sizey, usVector X );
  104. void  __vf  VUS_indput(  usVector Y, usVector X, uiVector Ind, ui sizex );
  105.  
  106. ui    __vf  VUS_searchC( usVector XTab, ui size, unsigned short C, int mode );
  107. void  __vf  VUS_searchV( uiVector Ind, usVector X, ui sizex,
  108.                          usVector Tab, ui sizetab, int mode );
  109.  
  110. /********************   One-dimensional Vector Operations  ********/
  111.  
  112. unsigned short __vf  VUSo_sum( usVector X, ui size );
  113. void           __vf  VUSo_runsum( usVector Y, usVector X, ui size );
  114. #ifdef V_trapIntError
  115.     #define VUS_sum     VUSo_sum
  116.     #define VUS_runsum  VUSo_runsum
  117. #else
  118.     unsigned short __vf  VUS_sum( usVector X, ui size );
  119.     void           __vf  VUS_runsum( usVector Y, usVector X, ui size );
  120. #endif
  121. unsigned short  __vf  VUS_max( usVector X, ui size );
  122. unsigned short  __vf  VUS_min( usVector X, ui size );
  123. unsigned short  __vf  VUS_maxind( ui _VFAR *Ind, usVector X, ui size );
  124. unsigned short  __vf  VUS_minind( ui _VFAR *Ind, usVector X, ui size );
  125. double          __vf  VUS_fsum( usVector X, ui size );
  126. double          __vf  VUS_mean( usVector X, ui size );
  127. void   __vf  VUS_runmax( usVector Y, usVector X, ui size );
  128. void   __vf  VUS_runmin( usVector Y, usVector X, ui size );
  129.  
  130. int    __vf  VUS_iselementC( usVector Tab, ui size, unsigned short C );
  131. ui     __vf  VUS_iselementV( usVector Y, usVector X, ui sizex,
  132.                              usVector Tab, ui sizetab );
  133.  
  134.  
  135. /************************ Input / Output ******************************/
  136.  
  137. void  __vf   V_ifprint(  FILE _VFAR *stream, void _VFAR *X, ui size,
  138.                   unsigned nperline, unsigned linewidth, unsigned vers );
  139. #define VUS_fprint( st, x, sz, npl, lw ) \
  140.              V_ifprint(  st, (void _VFAR *)(x), sz, npl, lw, 3 )
  141.  
  142. #if !defined _Windows || defined __FLAT__ || defined _WIN32
  143.     void __vf  V_icprint(  void _VFAR *X, ui size, unsigned nperline, unsigned vers );
  144.     #define VUS_cprint( x, sz, npl ) V_icprint( (void _VFAR *) (x), sz, npl, 3 )
  145. #endif
  146. #define VUS_print( x, sz, npl ) \
  147.              V_ifprint(  stdout, (void _VFAR *)(x), sz, npl, 80, 3 )
  148.  
  149. void  __vf   V_setRadix( int radix );
  150.            /* radix to be assumed by all whole-number read functions V??_read */
  151. void  __vf   VUS_read( usVector X, ui size, FILE _VFAR *stream );
  152. void  __vf   VUS_write( FILE _VFAR *stream, usVector X, ui size );
  153. void  __vf   VUS_nread( unsigned n, ui size, FILE _VFAR *stream, ... );
  154. void  __vf   VUS_nwrite( FILE _VFAR *stream, unsigned n, ui size, ... );
  155. void  __vf   VUS_setWriteFormat( char _VFAR *FormatString );
  156.                                             /* for VUS_write and VUS_nwrite */
  157. void  __vf   VUS_setWriteSeparate( char _VFAR *SepString ); /* for VUS_write */
  158. void  __vf   VUS_setNWriteSeparate( char _VFAR *SepString ); /* for VUS_nwrite */
  159. #ifdef V_HUGE
  160.     void  __vf   VUS_store(  FILE _VFAR *stream, usVector X, ui size );
  161.     void  __vf   VUS_recall( usVector X, ui size, FILE _VFAR *stream );
  162. #else
  163.     #ifdef __cplusplus
  164.          void  inline VUS_store( FILE _VFAR *stream, usVector X, ui size )
  165.          {    fwrite( X, sizeof(unsigned short), size, stream ); 
  166.          }
  167.          void  inline VUS_recall( usVector X, ui size, FILE _VFAR *stream )
  168.          {    fread(  X, sizeof(unsigned short), size, stream );
  169.          }
  170.     #else
  171.         #define VUS_store( str, X, sz )  \
  172.                      fwrite( X, sizeof(unsigned short), sz, str )
  173.         #define VUS_recall( X, sz, str ) \
  174.                      fread(  X, sizeof(unsigned short), sz, str )
  175.     #endif
  176. #endif      /* VUS_store, VUS_recall in binary format */
  177.  
  178. #ifdef __cplusplus
  179. }
  180. #endif
  181.  
  182. #endif   /*  __VUSSTD_H    */
  183.